package pe.com.bbva.efcap.servidor.servicio.impl;

import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import pe.com.bbva.efcap.servidor.bean.DeudaBean;
import pe.com.bbva.efcap.servidor.dao.DeudaDAO;
import pe.com.bbva.efcap.servidor.modelo.entidad.DeudaInstitucionFinanciera;
import pe.com.bbva.efcap.servidor.servicio.DeudaService;

@Service
@Transactional(readOnly = true)
public class DeudaServiceImpl implements DeudaService{
	
	@Autowired
	private DeudaDAO deudaDAO;

	private static final Logger LOGGER = LoggerFactory.getLogger(DeudaServiceImpl.class);

	@Override
	@Transactional(readOnly = false)
	public long guardarDeuda(DeudaInstitucionFinanciera deuda) {
		try{
			return (Long)deudaDAO.guardar(deuda);
		}catch(Exception e){
			LOGGER.error("DeudaServiceImpl -> guardarDeuda: " + e.getMessage(), e);
			return 0;
		}
	}

	@Override
	public List<DeudaBean> obtenerDeudasCliente(int idCliente, String tipo) {
		try {
			List<DeudaInstitucionFinanciera> lDeudas = deudaDAO.obtenerDeudasCliente(idCliente, tipo);
			List<DeudaBean> lDeudaBean = new ArrayList<DeudaBean>();
			for (int i=0; i<lDeudas.size(); i++){
				DeudaBean bean = new DeudaBean();
				bean.setItem(i+1);
				bean.setMonto(lDeudas.get(i).getMonto());
				bean.setPeriodoGracia(lDeudas.get(i).getPeriodoGracia());
				bean.setPlazoRestante(lDeudas.get(i).getPlazoRestante());
				bean.setTasa(lDeudas.get(i).getTasa());
				bean.setBancoNombre(lDeudas.get(i).getSimulacion().getNombreCliente());
				bean.setClienteId(lDeudas.get(i).getSimulacion().getCliente().getIdCliente());
				lDeudaBean.add(bean);
			}
			return lDeudaBean;
		} catch (Exception e) {
			LOGGER.error("DeudaServiceImpl -> obtenerDeudasCliente: " + e.getMessage(), e);
			return null;
		}
	}
	
}
